home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / sos3-2.lha / src / cfe / cfe_lex.h < prev    next >
C/C++ Source or Header  |  1992-01-23  |  17KB  |  1,020 lines

  1. # include "stdio.h"
  2. # define U(x) x
  3. # define NLSTATE yyprevious=YYNEWLINE
  4. # define BEGIN yybgin = yysvec + 1 +
  5. # define INITIAL 0
  6. # define YYLERR yysvec
  7. # define YYSTATE (yyestate-yysvec-1)
  8. # define YYOPTIM 1
  9. # define YYLMAX BUFSIZ
  10. # define output(c) putc(c,yyout)
  11. # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
  12. # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
  13. # define yymore() (yymorfg=1)
  14. # define ECHO fprintf(yyout, "%s",yytext)
  15. # define REJECT { nstr = yyreject(); goto yyfussy;}
  16. int yyleng; extern char yytext[];
  17. int yymorfg;
  18. extern char *yysptr, yysbuf[];
  19. int yytchar;
  20. FILE *yyin = {stdin}, *yyout = {stdout};
  21. extern int yylineno;
  22. struct yysvf { 
  23.     struct yywork *yystoff;
  24.     struct yysvf *yyother;
  25.     int *yystops;};
  26. struct yysvf *yyestate;
  27. extern struct yysvf yysvec[], *yybgin;
  28.  /* --------------------------------------------------------------------------
  29.   * Copyright 1992 by Forschungszentrum Informatik (FZI)
  30.   *
  31.   * You can use and distribute this software under the terms of the licence
  32.   * you should have received along with this program.
  33.   * If not or if you want additional information, write to
  34.   * Forschungszentrum Informatik, "STONE", Haid-und-Neu-Strasse 10-14,
  35.   * D-7500 Karlsruhe 1, Germany.
  36.   * --------------------------------------------------------------------------
  37.   */
  38. extern "C" int yywrap();
  39. extern "C" int yylook();
  40. extern "C" int yyback(int*, int);
  41. extern "C" YYSTYPE yylval;
  42. extern "C" void yyecho();
  43.  
  44. static int name_or_keyword ()
  45. {  switch (yytext[0])
  46.    {  case 'a':
  47.          if (streql (yytext, "abstract")) return abstract_tok;
  48.      break;
  49.       case 'c':
  50.          if (streql (yytext, "class")) return class_tok;
  51.      break;
  52.       case 'd':
  53.          if (streql (yytext, "definite")) return definite_tok;
  54.      break;
  55.       case 'e':
  56.          if (streql (yytext, "enum")) return enum_tok;
  57.          if (streql (yytext, "extern")) return extern_tok;
  58.      break;
  59.       case 'f':
  60.          if (streql (yytext, "friend")) return friend_tok;
  61.      break;
  62.       case 'l':
  63.          if (streql (yytext, "local")) return local_tok;
  64.      break;
  65.       case 'o':
  66.          if (streql (yytext, "operator")) return operator_tok;
  67.      break;
  68.       case 'p':
  69.          if (streql (yytext, "private")) return private_tok;
  70.          if (streql (yytext, "protected")) return protected_tok;
  71.          if (streql (yytext, "public")) return public_tok;
  72.      break;
  73.       case 's':
  74.          if (streql (yytext, "set")) return set_tok;
  75.          if (streql (yytext, "schema")) return schema_tok;
  76.          if (streql (yytext, "static")) return static_tok;
  77.      break;
  78.       case 't':
  79.          if (streql (yytext, "typedef")) return typedef_tok;
  80.      break;
  81.       case 'u':
  82.          if (streql (yytext, "union")) return union_tok;
  83.      break;
  84.       case 'w':
  85.          if (streql (yytext, "with")) return with_tok;
  86.      break;
  87.       default:
  88.      break;
  89.    }
  90.    return name_tok;
  91. }
  92.  
  93. # define comment 2
  94. # define YYNEWLINE 10
  95. yylex(){
  96. int nstr; extern int yyprevious;
  97. while((nstr = yylook()) >= 0)
  98. yyfussy: switch(nstr){
  99. case 0:
  100. if(yywrap()) return(0); break;
  101. case 1:
  102.         {yyecho(); BEGIN comment;}
  103. break;
  104. case 2:
  105. {yyecho();}
  106. break;
  107. case 3:
  108. {yyecho(); BEGIN 0;}
  109. break;
  110. case 4:
  111. {yymore();}
  112. break;
  113. case 5:
  114.     {yyecho();}
  115. break;
  116. case 6:
  117.         {yyecho(); return l_abr_tok;}
  118. break;
  119. case 7:
  120.         {yyecho(); return r_abr_tok;}
  121. break;
  122. case 8:
  123.         {yyecho(); return ampersand_tok;}
  124. break;
  125. case 9:
  126.         {yyecho(); return ampersand_assign_tok;}
  127. break;
  128. case 10:
  129.         {yyecho(); return and_tok;}
  130. break;
  131. case 11:
  132.         {yyecho(); return assign_tok;}
  133. break;
  134. case 12:
  135.         {yyecho(); return bar_tok;}
  136. break;
  137. case 13:
  138.         {yyecho(); return bar_assign_tok;}
  139. break;
  140. case 14:
  141.         {yyecho(); return l_br_tok;}
  142. break;
  143. case 15:
  144.         {yyecho(); return r_br_tok;}
  145. break;
  146. case 16:
  147.         {yyecho(); return l_brc_tok;}
  148. break;
  149. case 17:
  150.         {yyecho(); return r_brc_tok;}
  151. break;
  152. case 18:
  153.         {yyecho(); return circumflex_tok;}
  154. break;
  155. case 19:
  156.         {yyecho(); return circumflex_assign_tok;}
  157. break;
  158. case 20:
  159.         {yyecho(); return colon_tok;}
  160. break;
  161. case 21:
  162.         {yyecho(); return comma_tok;}
  163. break;
  164. case 22:
  165.         {yyecho(); return equal_tok;}
  166. break;
  167. case 23:
  168.         {yyecho(); return greater_equal_tok;}
  169. break;
  170. case 24:
  171.         {yyecho(); return less_equal_tok;}
  172. break;
  173. case 25:
  174.         {yyecho(); return minus_tok;}
  175. break;
  176. case 26:
  177.         {yyecho(); return minus_assign_tok;}
  178. break;
  179. case 27:
  180.         {yyecho(); return not_equal_tok;}
  181. break;
  182. case 28:
  183.         {yyecho(); return or_tok;}
  184. break;
  185. case 29:
  186.         {yyecho(); return l_par_tok;}
  187. break;
  188. case 30:
  189.         {yyecho(); return r_par_tok;}
  190. break;
  191. case 31:
  192.         {yyecho(); return percent_tok;}
  193. break;
  194. case 32:
  195.         {yyecho(); return percent_assign_tok;}
  196. break;
  197. case 33:
  198.         {yyecho(); return plus_tok;}
  199. break;
  200. case 34:
  201.         {yyecho(); return plus_assign_tok;}
  202. break;
  203. case 35:
  204.         {yyecho(); return rshift_assign_tok;}
  205. break;
  206. case 36:
  207.         {yyecho(); return lshift_assign_tok;}
  208. break;
  209. case 37:
  210.         {yyecho(); return slash_tok;}
  211. break;
  212. case 38:
  213.         {yyecho(); return slash_assign_tok;}
  214. break;
  215. case 39:
  216.         {yyecho(); return star_tok;}
  217. break;
  218. case 40:
  219.         {yyecho(); return star_assign_tok;}
  220. break;
  221. case 41:
  222.         {yyecho(); return semicolon_tok;}
  223. break;
  224. case 42:
  225.         {yyecho(); return exclam_tok;}
  226. break;
  227. case 43:
  228.     {yyecho();
  229.              yylval.i = atoi (yytext);
  230.              return number_tok;}
  231. break;
  232. case 44:
  233. {yyecho();
  234.              int tok = name_or_keyword();
  235.              if (tok == name_tok)
  236.              {  yylval.s = new char[yyleng+1];
  237.                 strcpy (yylval.s, yytext);
  238.              }
  239.              return tok;}
  240. break;
  241. case 45:
  242.     {yyecho();}
  243. break;
  244. case 46:
  245.         {yyecho(); cfe_error (err_USE, err_CFE_LEXICAL_ERROR);}
  246. break;
  247. case -1:
  248. break;
  249. default:
  250. fprintf(yyout,"bad switch yylook %d",nstr);
  251. } return(0); }
  252. /* end of yylex */
  253. int yyvstop[] = {
  254. 0,
  255.  
  256. 46,
  257. 0,
  258.  
  259. 45,
  260. 46,
  261. 0,
  262.  
  263. 45,
  264. 0,
  265.  
  266. 42,
  267. 46,
  268. 0,
  269.  
  270. 31,
  271. 46,
  272. 0,
  273.  
  274. 8,
  275. 46,
  276. 0,
  277.  
  278. 29,
  279. 46,
  280. 0,
  281.  
  282. 30,
  283. 46,
  284. 0,
  285.  
  286. 39,
  287. 46,
  288. 0,
  289.  
  290. 33,
  291. 46,
  292. 0,
  293.  
  294. 21,
  295. 46,
  296. 0,
  297.  
  298. 25,
  299. 46,
  300. 0,
  301.  
  302. 37,
  303. 46,
  304. 0,
  305.  
  306. 43,
  307. 46,
  308. 0,
  309.  
  310. 20,
  311. 46,
  312. 0,
  313.  
  314. 41,
  315. 46,
  316. 0,
  317.  
  318. 6,
  319. 46,
  320. 0,
  321.  
  322. 11,
  323. 46,
  324. 0,
  325.  
  326. 7,
  327. 46,
  328. 0,
  329.  
  330. 44,
  331. 46,
  332. 0,
  333.  
  334. 14,
  335. 46,
  336. 0,
  337.  
  338. 15,
  339. 46,
  340. 0,
  341.  
  342. 18,
  343. 46,
  344. 0,
  345.  
  346. 16,
  347. 46,
  348. 0,
  349.  
  350. 12,
  351. 46,
  352. 0,
  353.  
  354. 17,
  355. 46,
  356. 0,
  357.  
  358. 46,
  359. 0,
  360.  
  361. 45,
  362. 46,
  363. 0,
  364.  
  365. 2,
  366. 45,
  367. 0,
  368.  
  369. 42,
  370. 46,
  371. 0,
  372.  
  373. 31,
  374. 46,
  375. 0,
  376.  
  377. 8,
  378. 46,
  379. 0,
  380.  
  381. 29,
  382. 46,
  383. 0,
  384.  
  385. 30,
  386. 46,
  387. 0,
  388.  
  389. 4,
  390. 39,
  391. 46,
  392. 0,
  393.  
  394. 33,
  395. 46,
  396. 0,
  397.  
  398. 21,
  399. 46,
  400. 0,
  401.  
  402. 25,
  403. 46,
  404. 0,
  405.  
  406. 37,
  407. 46,
  408. 0,
  409.  
  410. 43,
  411. 46,
  412. 0,
  413.  
  414. 20,
  415. 46,
  416. 0,
  417.  
  418. 41,
  419. 46,
  420. 0,
  421.  
  422. 6,
  423. 46,
  424. 0,
  425.  
  426. 11,
  427. 46,
  428. 0,
  429.  
  430. 7,
  431. 46,
  432. 0,
  433.  
  434. 44,
  435. 46,
  436. 0,
  437.  
  438. 14,
  439. 46,
  440. 0,
  441.  
  442. 15,
  443. 46,
  444. 0,
  445.  
  446. 18,
  447. 46,
  448. 0,
  449.  
  450. 16,
  451. 46,
  452. 0,
  453.  
  454. 12,
  455. 46,
  456. 0,
  457.  
  458. 17,
  459. 46,
  460. 0,
  461.  
  462. 27,
  463. 0,
  464.  
  465. 32,
  466. 0,
  467.  
  468. 10,
  469. 0,
  470.  
  471. 9,
  472. 0,
  473.  
  474. 40,
  475. 0,
  476.  
  477. 34,
  478. 0,
  479.  
  480. 26,
  481. 0,
  482.  
  483. 1,
  484. 0,
  485.  
  486. 38,
  487. 0,
  488.  
  489. 43,
  490. 0,
  491.  
  492. 24,
  493. 0,
  494.  
  495. 22,
  496. 0,
  497.  
  498. 23,
  499. 0,
  500.  
  501. 44,
  502. 0,
  503.  
  504. 19,
  505. 0,
  506.  
  507. 13,
  508. 0,
  509.  
  510. 28,
  511. 0,
  512.  
  513. 2,
  514. 0,
  515.  
  516. 4,
  517. 0,
  518.  
  519. 27,
  520. 0,
  521.  
  522. 32,
  523. 0,
  524.  
  525. 10,
  526. 0,
  527.  
  528. 9,
  529. 0,
  530.  
  531. 3,
  532. 0,
  533.  
  534. 34,
  535. 0,
  536.  
  537. 26,
  538. 0,
  539.  
  540. 1,
  541. 4,
  542. 0,
  543.  
  544. 38,
  545. 0,
  546.  
  547. 43,
  548. 0,
  549.  
  550. 24,
  551. 0,
  552.  
  553. 22,
  554. 0,
  555.  
  556. 23,
  557. 0,
  558.  
  559. 44,
  560. 0,
  561.  
  562. 19,
  563. 0,
  564.  
  565. 13,
  566. 0,
  567.  
  568. 28,
  569. 0,
  570.  
  571. 5,
  572. 0,
  573.  
  574. 36,
  575. 0,
  576.  
  577. 35,
  578. 0,
  579.  
  580. 2,
  581. 5,
  582. 0,
  583.  
  584. 4,
  585. 0,
  586.  
  587. 36,
  588. 0,
  589.  
  590. 35,
  591. 0,
  592.  
  593. 3,
  594. 0,
  595. 0};
  596. # define YYTYPE char
  597. struct yywork { YYTYPE verify, advance; } yycrank[] = {
  598. 0,0,    0,0,    1,5,    0,0,    
  599. 0,0,    0,0,    0,0,    0,0,    
  600. 0,0,    0,0,    1,6,    1,7,    
  601. 0,0,    0,0,    0,0,    0,0,    
  602. 0,0,    0,0,    0,0,    0,0,    
  603. 0,0,    0,0,    0,0,    0,0,    
  604. 0,0,    0,0,    0,0,    0,0,    
  605. 0,0,    0,0,    0,0,    0,0,    
  606. 0,0,    0,0,    1,8,    0,0,    
  607. 0,0,    0,0,    1,9,    1,10,    
  608. 0,0,    1,11,    1,12,    1,13,    
  609. 1,14,    1,15,    1,16,    10,59,    
  610. 1,17,    1,18,    79,84,    44,90,    
  611. 90,90,    17,64,    104,107,    0,0,    
  612. 0,0,    0,0,    17,65,    1,19,    
  613. 1,20,    1,21,    1,22,    1,23,    
  614. 8,57,    9,58,    1,24,    13,61,    
  615. 14,62,    16,63,    10,60,    2,8,    
  616. 17,66,    21,68,    21,69,    2,9,    
  617. 2,10,    22,70,    2,11,    2,12,    
  618. 27,74,    2,14,    2,15,    2,16,    
  619. 34,80,    2,17,    23,71,    23,72,    
  620. 35,81,    29,75,    36,82,    39,84,    
  621. 1,25,    31,77,    1,26,    1,27,    
  622. 2,19,    2,20,    2,21,    2,22,    
  623. 2,23,    31,77,    31,78,    40,85,    
  624. 42,86,    39,61,    48,93,    3,31,    
  625. 53,97,    43,87,    47,91,    47,92,    
  626. 55,98,    36,83,    43,88,    3,32,    
  627. 3,33,    49,94,    49,95,    50,96,    
  628. 68,101,    72,102,    91,105,    95,106,    
  629. 1,28,    1,29,    1,30,    0,0,    
  630. 43,89,    2,25,    0,0,    2,26,    
  631. 2,27,    0,0,    31,79,    0,0,    
  632. 50,96,    0,0,    96,96,    3,34,    
  633. 31,77,    0,0,    0,0,    3,35,    
  634. 3,36,    0,0,    3,37,    3,38,    
  635. 3,39,    3,40,    3,41,    3,42,    
  636. 29,76,    3,43,    3,44,    96,96,    
  637. 0,0,    31,77,    0,0,    0,0,    
  638. 0,0,    2,28,    2,29,    2,30,    
  639. 3,45,    3,46,    3,47,    3,48,    
  640. 3,49,    0,0,    0,0,    3,50,    
  641. 0,0,    0,0,    0,0,    55,99,    
  642. 4,34,    0,0,    0,0,    0,0,    
  643. 4,35,    4,36,    0,0,    4,37,    
  644. 4,38,    65,65,    4,40,    4,41,    
  645. 4,42,    0,0,    4,43,    0,0,    
  646. 0,0,    65,65,    65,100,    0,0,    
  647. 0,0,    3,51,    0,0,    3,52,    
  648. 3,53,    4,45,    4,46,    4,47,    
  649. 4,48,    4,49,    18,67,    18,67,    
  650. 18,67,    18,67,    18,67,    18,67,    
  651. 18,67,    18,67,    18,67,    18,67,    
  652. 0,0,    0,0,    0,0,    0,0,    
  653. 0,0,    0,0,    0,0,    0,0,    
  654. 0,0,    0,0,    65,65,    0,0,    
  655. 0,0,    3,54,    3,55,    3,56,    
  656. 65,65,    0,0,    4,51,    0,0,    
  657. 4,52,    4,53,    0,0,    0,0,    
  658. 0,0,    0,0,    0,0,    0,0,    
  659. 0,0,    0,0,    0,0,    0,0,    
  660. 0,0,    65,65,    0,0,    0,0,    
  661. 24,73,    24,73,    24,73,    24,73,    
  662. 24,73,    24,73,    24,73,    24,73,    
  663. 24,73,    24,73,    0,0,    0,0,    
  664. 0,0,    0,0,    4,54,    4,55,    
  665. 4,56,    24,73,    24,73,    24,73,    
  666. 24,73,    24,73,    24,73,    24,73,    
  667. 24,73,    24,73,    24,73,    24,73,    
  668. 24,73,    24,73,    24,73,    24,73,    
  669. 24,73,    24,73,    24,73,    24,73,    
  670. 24,73,    24,73,    24,73,    24,73,    
  671. 24,73,    24,73,    24,73,    0,0,    
  672. 0,0,    0,0,    0,0,    24,73,    
  673. 0,0,    24,73,    24,73,    24,73,    
  674. 24,73,    24,73,    24,73,    24,73,    
  675. 24,73,    24,73,    24,73,    24,73,    
  676. 24,73,    24,73,    24,73,    24,73,    
  677. 24,73,    24,73,    24,73,    24,73,    
  678. 24,73,    24,73,    24,73,    24,73,    
  679. 24,73,    24,73,    24,73,    88,88,    
  680. 0,0,    0,0,    0,0,    0,0,    
  681. 0,0,    0,0,    0,0,    88,88,    
  682. 88,103,    0,0,    0,0,    0,0,    
  683. 0,0,    0,0,    0,0,    0,0,    
  684. 0,0,    0,0,    0,0,    0,0,    
  685. 0,0,    0,0,    0,0,    0,0,    
  686. 0,0,    0,0,    0,0,    0,0,    
  687. 0,0,    0,0,    0,0,    0,0,    
  688. 0,0,    0,0,    0,0,    0,0,    
  689. 0,0,    0,0,    0,0,    0,0,    
  690. 88,104,    0,0,    0,0,    0,0,    
  691. 0,0,    0,0,    88,88,    0,0,    
  692. 0,0,    0,0,    0,0,    0,0,    
  693. 0,0,    0,0,    0,0,    0,0,    
  694. 0,0,    0,0,    0,0,    0,0,    
  695. 0,0,    0,0,    0,0,    88,88,    
  696. 0,0};
  697. struct yysvf yysvec[] = {
  698. 0,    0,    0,
  699. yycrank+-1,    0,        0,    
  700. yycrank+-38,    yysvec+1,    0,    
  701. yycrank+-106,    0,        0,    
  702. yycrank+-143,    yysvec+3,    0,    
  703. yycrank+0,    0,        yyvstop+1,
  704. yycrank+0,    0,        yyvstop+3,
  705. yycrank+0,    0,        yyvstop+6,
  706. yycrank+3,    0,        yyvstop+8,
  707. yycrank+4,    0,        yyvstop+11,
  708. yycrank+9,    0,        yyvstop+14,
  709. yycrank+0,    0,        yyvstop+17,
  710. yycrank+0,    0,        yyvstop+20,
  711. yycrank+6,    0,        yyvstop+23,
  712. yycrank+7,    0,        yyvstop+26,
  713. yycrank+0,    0,        yyvstop+29,
  714. yycrank+8,    0,        yyvstop+32,
  715. yycrank+11,    0,        yyvstop+35,
  716. yycrank+158,    0,        yyvstop+38,
  717. yycrank+0,    0,        yyvstop+41,
  718. yycrank+0,    0,        yyvstop+44,
  719. yycrank+13,    0,        yyvstop+47,
  720. yycrank+16,    0,        yyvstop+50,
  721. yycrank+25,    0,        yyvstop+53,
  722. yycrank+204,    0,        yyvstop+56,
  723. yycrank+0,    0,        yyvstop+59,
  724. yycrank+0,    0,        yyvstop+62,
  725. yycrank+19,    0,        yyvstop+65,
  726. yycrank+0,    0,        yyvstop+68,
  727. yycrank+28,    0,        yyvstop+71,
  728. yycrank+0,    0,        yyvstop+74,
  729. yycrank+-92,    0,        yyvstop+77,
  730. yycrank+0,    yysvec+31,    yyvstop+79,
  731. yycrank+0,    0,        yyvstop+82,
  732. yycrank+-23,    yysvec+31,    yyvstop+85,
  733. yycrank+-27,    yysvec+31,    yyvstop+88,
  734. yycrank+-52,    yysvec+31,    yyvstop+91,
  735. yycrank+0,    yysvec+31,    yyvstop+94,
  736. yycrank+0,    yysvec+31,    yyvstop+97,
  737. yycrank+44,    0,        yyvstop+100,
  738. yycrank+-42,    yysvec+31,    yyvstop+104,
  739. yycrank+0,    yysvec+31,    yyvstop+107,
  740. yycrank+-43,    yysvec+31,    yyvstop+110,
  741. yycrank+-67,    yysvec+31,    yyvstop+113,
  742. yycrank+-3,    yysvec+31,    yyvstop+116,
  743. yycrank+0,    yysvec+31,    yyvstop+119,
  744. yycrank+0,    yysvec+31,    yyvstop+122,
  745. yycrank+-50,    yysvec+31,    yyvstop+125,
  746. yycrank+-45,    yysvec+31,    yyvstop+128,
  747. yycrank+-56,    yysvec+31,    yyvstop+131,
  748. yycrank+-71,    yysvec+31,    yyvstop+134,
  749. yycrank+0,    yysvec+31,    yyvstop+137,
  750. yycrank+0,    yysvec+31,    yyvstop+140,
  751. yycrank+-47,    yysvec+31,    yyvstop+143,
  752. yycrank+0,    yysvec+31,    yyvstop+146,
  753. yycrank+-51,    yysvec+31,    yyvstop+149,
  754. yycrank+0,    yysvec+31,    yyvstop+152,
  755. yycrank+0,    0,        yyvstop+155,
  756. yycrank+0,    0,        yyvstop+157,
  757. yycrank+0,    0,        yyvstop+159,
  758. yycrank+0,    0,        yyvstop+161,
  759. yycrank+0,    0,        yyvstop+163,
  760. yycrank+0,    0,        yyvstop+165,
  761. yycrank+0,    0,        yyvstop+167,
  762. yycrank+0,    0,        yyvstop+169,
  763. yycrank+-184,    0,        0,    
  764. yycrank+0,    0,        yyvstop+171,
  765. yycrank+0,    yysvec+18,    yyvstop+173,
  766. yycrank+59,    0,        0,    
  767. yycrank+0,    0,        yyvstop+175,
  768. yycrank+0,    0,        yyvstop+177,
  769. yycrank+0,    0,        yyvstop+179,
  770. yycrank+60,    0,        0,    
  771. yycrank+0,    yysvec+24,    yyvstop+181,
  772. yycrank+0,    0,        yyvstop+183,
  773. yycrank+0,    0,        yyvstop+185,
  774. yycrank+0,    0,        yyvstop+187,
  775. yycrank+0,    yysvec+31,    0,    
  776. yycrank+0,    0,        yyvstop+189,
  777. yycrank+3,    0,        yyvstop+191,
  778. yycrank+0,    yysvec+31,    yyvstop+193,
  779. yycrank+0,    yysvec+31,    yyvstop+195,
  780. yycrank+0,    yysvec+31,    yyvstop+197,
  781. yycrank+0,    yysvec+31,    yyvstop+199,
  782. yycrank+0,    0,        yyvstop+201,
  783. yycrank+0,    yysvec+31,    yyvstop+203,
  784. yycrank+0,    yysvec+31,    yyvstop+205,
  785. yycrank+0,    yysvec+79,    yyvstop+207,
  786. yycrank+-326,    0,        0,    
  787. yycrank+0,    yysvec+31,    yyvstop+210,
  788. yycrank+-4,    yysvec+31,    yyvstop+212,
  789. yycrank+-61,    yysvec+31,    0,    
  790. yycrank+0,    yysvec+31,    yyvstop+214,
  791. yycrank+0,    yysvec+31,    yyvstop+216,
  792. yycrank+0,    yysvec+31,    yyvstop+218,
  793. yycrank+-62,    yysvec+31,    0,    
  794. yycrank+-90,    yysvec+31,    yyvstop+220,
  795. yycrank+0,    yysvec+31,    yyvstop+222,
  796. yycrank+0,    yysvec+31,    yyvstop+224,
  797. yycrank+0,    yysvec+31,    yyvstop+226,
  798. yycrank+0,    0,        yyvstop+228,
  799. yycrank+0,    0,        yyvstop+230,
  800. yycrank+0,    0,        yyvstop+232,
  801. yycrank+0,    0,        yyvstop+234,
  802. yycrank+-7,    yysvec+65,    yyvstop+237,
  803. yycrank+0,    yysvec+31,    yyvstop+239,
  804. yycrank+0,    yysvec+31,    yyvstop+241,
  805. yycrank+0,    yysvec+65,    yyvstop+243,
  806. 0,    0,    0};
  807. struct yywork *yytop = yycrank+391;
  808. struct yysvf *yybgin = yysvec+1;
  809. char yymatch[] = {
  810. 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  811. 01  ,011 ,012 ,01  ,011 ,01  ,01  ,01  ,
  812. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  813. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  814. 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  815. 01  ,01  ,'*' ,01  ,01  ,01  ,01  ,01  ,
  816. '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
  817. '0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
  818. 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  819. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  820. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  821. 'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,'A' ,
  822. 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  823. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  824. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  825. 'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,01  ,
  826. 0};
  827. char yyextra[] = {
  828. 0,0,0,0,0,0,0,0,
  829. 0,0,0,0,0,0,0,0,
  830. 0,0,0,0,0,0,0,0,
  831. 0,0,0,0,0,0,0,0,
  832. 0,0,0,0,0,0,0,0,
  833. 0,0,0,0,0,0,0,0,
  834. 0};
  835. #ifndef lint
  836. static    char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
  837. #endif
  838.  
  839. int yylineno =1;
  840. # define YYU(x) x
  841. # define NLSTATE yyprevious=YYNEWLINE
  842. char yytext[YYLMAX];
  843. struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
  844. char yysbuf[YYLMAX];
  845. char *yysptr = yysbuf;
  846. int *yyfnd;
  847. extern struct yysvf *yyestate;
  848. int yyprevious = YYNEWLINE;
  849. yylook(){
  850.     register struct yysvf *yystate, **lsp;
  851.     register struct yywork *yyt;
  852.     struct yysvf *yyz;
  853.     int yych, yyfirst;
  854.     struct yywork *yyr;
  855. # ifdef LEXDEBUG
  856.     int debug;
  857. # endif
  858.     char *yylastch;
  859.     /* start off machines */
  860. # ifdef LEXDEBUG
  861.     debug = 0;
  862. # endif
  863.     yyfirst=1;
  864.     if (!yymorfg)
  865.         yylastch = yytext;
  866.     else {
  867.         yymorfg=0;
  868.         yylastch = yytext+yyleng;
  869.         }
  870.     for(;;){
  871.         lsp = yylstate;
  872.         yyestate = yystate = yybgin;
  873.         if (yyprevious==YYNEWLINE) yystate++;
  874.         for (;;){
  875. # ifdef LEXDEBUG
  876.             if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
  877. # endif
  878.             yyt = yystate->yystoff;
  879.             if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
  880.                 yyz = yystate->yyother;
  881.                 if(yyz == 0)break;
  882.                 if(yyz->yystoff == yycrank)break;
  883.                 }
  884.             *yylastch++ = yych = input();
  885.             yyfirst=0;
  886.         tryagain:
  887. # ifdef LEXDEBUG
  888.             if(debug){
  889.                 fprintf(yyout,"char ");
  890.                 allprint(yych);
  891.                 putchar('\n');
  892.                 }
  893. # endif
  894.             yyr = yyt;
  895.             if ( (int)yyt > (int)yycrank){
  896.                 yyt = yyr + yych;
  897.                 if (yyt <= yytop && yyt->verify+yysvec == yystate){
  898.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  899.                         {unput(*--yylastch);break;}
  900.                     *lsp++ = yystate = yyt->advance+yysvec;
  901.                     goto contin;
  902.                     }
  903.                 }
  904. # ifdef YYOPTIM
  905.             else if((int)yyt < (int)yycrank) {        /* r < yycrank */
  906.                 yyt = yyr = yycrank+(yycrank-yyt);
  907. # ifdef LEXDEBUG
  908.                 if(debug)fprintf(yyout,"compressed state\n");
  909. # endif
  910.                 yyt = yyt + yych;
  911.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  912.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  913.                         {unput(*--yylastch);break;}
  914.                     *lsp++ = yystate = yyt->advance+yysvec;
  915.                     goto contin;
  916.                     }
  917.                 yyt = yyr + YYU(yymatch[yych]);
  918. # ifdef LEXDEBUG
  919.                 if(debug){
  920.                     fprintf(yyout,"try fall back character ");
  921.                     allprint(YYU(yymatch[yych]));
  922.                     putchar('\n');
  923.                     }
  924. # endif
  925.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  926.                     if(yyt->advance+yysvec == YYLERR)    /* error transition */
  927.                         {unput(*--yylastch);break;}
  928.                     *lsp++ = yystate = yyt->advance+yysvec;
  929.                     goto contin;
  930.                     }
  931.                 }
  932.             if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
  933. # ifdef LEXDEBUG
  934.                 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
  935. # endif
  936.                 goto tryagain;
  937.                 }
  938. # endif
  939.             else
  940.                 {unput(*--yylastch);break;}
  941.         contin:
  942. # ifdef LEXDEBUG
  943.             if(debug){
  944.                 fprintf(yyout,"state %d char ",yystate-yysvec-1);
  945.                 allprint(yych);
  946.                 putchar('\n');
  947.                 }
  948. # endif
  949.             ;
  950.             }
  951. # ifdef LEXDEBUG
  952.         if(debug){
  953.             fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
  954.             allprint(yych);
  955.             putchar('\n');
  956.             }
  957. # endif
  958.         while (lsp-- > yylstate){
  959.             *yylastch-- = 0;
  960.             if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
  961.                 yyolsp = lsp;
  962.                 if(yyextra[*yyfnd]){        /* must backup */
  963.                     while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
  964.                         lsp--;
  965.                         unput(*yylastch--);
  966.                         }
  967.                     }
  968.                 yyprevious = YYU(*yylastch);
  969.                 yylsp = lsp;
  970.                 yyleng = yylastch-yytext+1;
  971.                 yytext[yyleng] = 0;
  972. # ifdef LEXDEBUG
  973.                 if(debug){
  974.                     fprintf(yyout,"\nmatch ");
  975.                     sprint(yytext);
  976.                     fprintf(yyout," action %d\n",*yyfnd);
  977.                     }
  978. # endif
  979.                 return(*yyfnd++);
  980.                 }
  981.             unput(*yylastch);
  982.             }
  983.         if (yytext[0] == 0  /* && feof(yyin) */)
  984.             {
  985.             yysptr=yysbuf;
  986.             return(0);
  987.             }
  988.         yyprevious = yytext[0] = input();
  989.         if (yyprevious>0)
  990.             output(yyprevious);
  991.         yylastch=yytext;
  992. # ifdef LEXDEBUG
  993.         if(debug)putchar('\n');
  994. # endif
  995.         }
  996.     }
  997. yyback (int *p, int m)
  998.     
  999. {
  1000. if (p==0) return(0);
  1001. while (*p)
  1002.     {
  1003.     if (*p++ == m)
  1004.         return(1);
  1005.     }
  1006. return(0);
  1007. }
  1008.     /* the following are only used in the lex library */
  1009. yyinput(){
  1010.     return(input());
  1011.     }
  1012. yyoutput (int c)
  1013.  {
  1014.     output(c);
  1015.     }
  1016. yyunput (int c)
  1017.  {
  1018.     unput(c);
  1019.     }
  1020.